var policyText = {
  "expiration": "2018-01-28T12:00:00.000Z", //设置该Policy的失效时间，超过这个失效时间之后，就没有办法通过这个policy上传文件了
  "conditions": [
    ["content-length-range", 0, 1048576000] // 设置上传文件的大小限制
  ]
};

accessid = 'LTAIvmzEORP9ltt9';
accesskey = 'xVLZtDc4axTSY3QvBLGxYhGVpEjqwd';
host = 'http://zxgactivity.oss-cn-beijing.aliyuncs.com/';  // 服务器端地址
var filename = '{$filename}';
var dir = '20180114/update/';//图片存储路径;
img_url = host + dir + filename;//数据库储存文件路径

var policyBase64 = Base64.encode(JSON.stringify(policyText));
message = policyBase64;
var bytes = Crypto.HMAC(Crypto.SHA1, message, accesskey, {asBytes: true});
var signature = Crypto.util.bytesToBase64(bytes);
var fileNames = []

//实例化一个plupload上传对象
var uploader = new plupload.Uploader({
  runtimes: 'html5,flash,silverlight,html4',  // 上传方式
  browse_button: 'selectfiles',  // 触发的dom
  container: document.getElementById('body'),
  url: host,  // 	服务器端接收和处理上传文件的脚本地址
  flash_swf_url: '../js/Moxie.swf',
  silverlight_xap_url: '../js/Moxie.xap',
  multi_selection: true, //是否可以在文件浏览对话框中选择多个文件，true为可以，false为不可以
  unique_names: true, // 为每个上传的文件生成唯一的文件名
  filters: {
    max_file_size: '10mb',  // 限定文件上传的大小
    /*mime_types: [{ // 限定文件上传的类型
      title: "Image files",
      extensions: "jpg,gif,png,jpeg"
    },
      {
        title: "Zip files",
        extensions: "zip"
      }],*/
    prevent_duplicates: true //不允许选取重复文件
  },
  multipart_params: {
    'Filename': filename,
    'key': dir + filename,
    'policy': policyBase64,
    'OSSAccessKeyId': accessid,
    'success_action_status': '200', //让服务端返回200,不然，默认会返回204
    'signature': signature,
    'fileNames': fileNames
  },
  init: {
    PostInit: function () {
      document.getElementById('ossfile').innerHTML = '';
      // console.log(uploader.settings.multipart_params.Filename)
      document.getElementById('postfiles').onclick = function () {
         if($.trim($('#textarea').val()) === '') {
          alert('请输入描述信息...');
          return false;
         }
        if (uploader.files.length > 12) { // 最多上传12张图
          alert('最多上传12张图片');
          return false;
        }
        if (uploader.files.length < 6) { // 最多上传12张图
          alert('最少上传6张图片');
          return false;
        }
        showMsg('正在上传,请不要关闭页面!', 'center');
        uploader.start();
        return false;
      };
    },
    FilesAdded: function (up, files) { // 文件添加至上传队列时触发
      plupload.each(files, function (file) {
        var html = '<li id="file-' + file.id + '" delid=' + file.id + '><p></p></li>';
        $(html).appendTo('#ossfile');
        previewImage(file, function (imgsrc) {
          $('#file-' + file.id).append('<img src="' + imgsrc + '" />');
        })
      });
      showMsg('点击图片可移除', 'center');
    },
    BeforeUpload: function (upload, files) { // 队列中的某一个文件正要开始上传时触发
      // console.log(files);
      // 设置图片名称
        filename = 'web' + (Date.parse(new Date()) / 1000) + hex_md5(Math.floor(Math.random() * 99999)) + files.id + '.jpg';//图片名称
        uploader.settings.multipart_params.Filename = filename;
        uploader.settings.multipart_params.key = dir + filename;
        fileNames.push(filename);
    },
    UploadComplete: function (upload, files) {  // 所有文件上传完成时触发
      showMsg('报名成功!', 'center');
      // console.log(fileNames);
      uploader.settings.multipart_params.fileNames = fileNames;
    },
    Error: function (up, errObject) {  // 发生错误时触发
      alert(errObject.code);
      // showMsg('报名失败,请重新报名!!!', 'center');
    }
  }
});

uploader.init();  // 初始化uploader
//plupload(1.2)中为我们提供了mOxie对象
//有关mOxie的介绍和说明请看：https://github.com/moxiecode/moxie/wiki/API
function previewImage(file, callback) { //file为plupload事件监听函数参数中的file对象,callback为预览图片准备完成的回调函数
  if (!file || !/image\//.test(file.type)) return;
  if (file.type == 'image/gif') { //gif使用FileReader进行预览,因为mOxie.Image只支持jpg和png
    var fr = new mOxie.FileReader();
    fr.onload = function () {
      callback(fr.result);
      fr.destroy();
      fr = null;
    }
    fr.readAsDataURL(file.getSource());
  } else {
    var preloader = new mOxie.Image();
    preloader.onload = function () {
      preloader.downsize(80, 80); //先压缩一下要预览的图片,宽300，高300
      var imgsrc = preloader.type == 'image/jpeg' ? preloader.getAsDataURL('image/jpeg', 80) : preloader.getAsDataURL(); //得到图片src,实质为一个base64编码的数据
      callback && callback(imgsrc); //callback传入的参数为预览图片的url
      preloader.destroy();
      preloader = null;
    };
    preloader.load(file.getSource());
  }
}

// 点击预览图片删除
$(function () {
  $('#ossfile').on('click', 'li img',
      function () {
        var toremove = '';
        var delid = $(this).parent('li').attr("delid");
        $(this).parent('li').remove();
        // 从上传队列中移除先前添加的文件
        for (var i in uploader.files) {
          if (uploader.files[i].id === delid) {
            toremove = i;
          }
        }
        uploader.files.splice(toremove, 1);
      })
})
